/*
 * HUsuario.cpp - Grupo 5 - Prog. Avanzada 2011
 *
 *  Javier Dominguez - 4.901.161-6
 *  Marcelo Parada - 1.977.094-9
 *  Rodrigo Ruiz - 4.481.611-2
 *  Maximiliano Silvera - 4.106.938-6
 */

#include "HUsuario.h"

HUsuario::HUsuario()
{
	colUsuario = new ColConcrete<Usuario*>();

	colReproduccion = new ColConcrete<Reproduccion*>();
}

HUsuario *HUsuario::instance;

HUsuario *HUsuario::getInstance()
{
	if(instance == NULL)
	{
		instance = new HUsuario();
	}

	return instance;
}

bool HUsuario::nickDisponible(string nick)
{
	ConcreteIterator<Usuario*> *iter = colUsuario->getIterator();

	while(iter->hasCurrent())
	{
		Usuario* curr = iter->current();

		iter->next();

		if(curr->getNick().compare(nick) == 0)
		{
			return false;
		}
	}

	return true;
}

void HUsuario::crearUsuario(UsuarioDT *usuarioDT)
{
	colUsuario->add(new Usuario(usuarioDT->getNick(), usuarioDT->getNombre(), usuarioDT->getMail()));
}

ColConcrete<UsuarioDT*> *HUsuario::obtenerListadoUsuarios()
{
	ColConcrete<UsuarioDT*> *colRetorno= new ColConcrete<UsuarioDT*>();

	ConcreteIterator<Usuario*> *iter = colUsuario->getIterator();

	while(iter->hasCurrent())
	{
		Usuario* curr = iter->current();

		iter->next();

		colRetorno->add(new UsuarioDT(curr->getNick(), curr->getNombre(), curr->getMail()));
	}

	return colRetorno;

}

HUsuario::~HUsuario()
{
	delete instance;

	delete colUsuario;

	delete colReproduccion;
}
